#include <avr/io.h>

#include "pwm.h"
#include "gpio.h"


void pwm_init() {
    TCCR0A = _BV(WGM01) | _BV(WGM00);
    TCCR0B = _BV(CS02) | _BV(CS01) | _BV(CS00);
    TCCR2A = _BV(WGM21) | _BV(WGM20);
    TCCR2B = _BV(CS22) | _BV(CS21) | _BV(CS20);
}


int pwm_set(int pin) {
    switch(pin) {
        case 3:
            TCCR2A |= _BV(COM2B1);
            OCR2B = 0;
            break;
        case 11:
            TCCR2A |= _BV(COM2A1);
            OCR2A = 0;
            break;
        default:
            return 0;
    }

    gpio_ddr(pin, 1);

    return 1;
}

int pwm_duty(int pin, uint8_t duty) {
    switch(pin) {
        case 3:
            OCR2B = duty;
            break;
        case 11:
            OCR2A = duty;
            break;
        default:
            return 0;
    }

    return 1;
}

